package com.piggy.logi.sys.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.annotation.Excel;
import com.piggy.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;



/**
 * 运单信息对象 logi_waybill
 *
 * @author piggy
 * @date 2023-10-25
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("logi_waybill")
public class LogiWaybill extends BaseEntity {

    private static final long serialVersionUID=1L;

    /** 运单id */
    @ApiModelProperty("运单id")
    @TableId(value = "waybill_id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long waybillId;

    /** 运单编号 */
    @ApiModelProperty("运单编号")
    private String outCode;

    /** 原运单id */
    @ApiModelProperty("原运单id")
    private String oldOutCode;

    /** 发货网点ID */
    @ApiModelProperty("部门id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deptId;

    /** 退单(0运单1退单) */
    @ApiModelProperty("退单(0运单1退单)")
    private Integer refund;

    /** 运单模式（0基础1完整） */
    @ApiModelProperty("运单模式（0基础1完整）")
    private Integer waybillScheme;

    /** 运单类型 */
    @ApiModelProperty("运单类型")
    private Integer waybillType;

    /** 发货网点ID */
    @ApiModelProperty("发货网点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shipNetId;

    /** 收货网点ID */
    @ApiModelProperty("收货网点ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deliveryNetId;

    /** 线路ID */
    @ApiModelProperty("线路ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long routId;

    /** 项目ID */
    @ApiModelProperty("项目ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long projectId;

    /** 发货方ID */
    @ApiModelProperty("发货方ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shipId;

    /** 发货方联系人 */
    @ApiModelProperty("发货方联系人")
    private String shipContacts;

    /** 发货方联系电话 */
    @ApiModelProperty("发货方联系电话")
    private String shipContactTel;

    /** 发货方省市区、县ID */
    @ApiModelProperty("发货方省市区、县ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shipDistrictId;

    /** 发货方详细地址 */
    @ApiModelProperty("发货方详细地址")
    private String shipAddress;

    /** 发货方经度 */
    @ApiModelProperty("发货方经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double shipLng;

    /** 发货方纬度 */
    @ApiModelProperty("发货方纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double shipLat;

    /** 发货方计划发货时间 */
    @ApiModelProperty("发货方计划发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipPlanTime;

    /** 发货方预约发货时间 */
    @ApiModelProperty("发货方预约发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date shipAppointmentTime;

    /** 发货方提货方式 */
    @ApiModelProperty("发货方提货方式")
    private Integer shipPickUpWay;

    /** 发货方提货费 */
    @ApiModelProperty("发货方提货费")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long shipPickUpFee;

    /** 收货方ID */
    @ApiModelProperty("收货方ID")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deliveryId;

    /** 收货方联系人 */
    @ApiModelProperty("收货方联系人")
    private String deliveryContacts;

    /** 收货方联系电话 */
    @ApiModelProperty("收货方联系电话")
    private String deliveryContactTel;

    /** 收货方区县Id */
    @ApiModelProperty("收货方区县Id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long deliveryDistrictId;

    /** 收货方详细地址 */
    @ApiModelProperty("收货方详细地址")
    private String deliveryAddress;

    /** 收货方经度 */
    @ApiModelProperty("收货方经度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double deliveryLng;

    /** 收货方纬度 */
    @ApiModelProperty("收货方纬度")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Double deliveryLat;

    /** 收货方计划发货时间 */
    @ApiModelProperty("收货方计划发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryPlanTime;

    /** 收货方预约发货时间 */
    @ApiModelProperty("收货方预约发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date deliveryAppointmentTime;

    /** 收货方提货方式 */
    @ApiModelProperty("收货方提货方式")
    private Integer deliveryPickUpWay;

    /** 收货方送货费 */
    @ApiModelProperty("收货方送货费")
    private BigDecimal deliveryPickUpFee;

    /** 送货时效要求 */
    @ApiModelProperty("送货时效要求")
    private Integer deliveryTimeReq;

    /** 是否控货（0否1是） */
    @ApiModelProperty("是否控货（0否1是）")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer cargoControl;

    /** 控货状态 (1 确认控货 2 放货) */
    @ApiModelProperty("控货状态 (1 确认控货 2 放货)")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer cargoControlStatus;

    /** 承运商操作人 */
    @ApiModelProperty("承运商操作人")
    private String carrierOperateName;

    /** 调度车次编号 */
    @ApiModelProperty("调度车次编号")
    private String scheduleNo;

    /** 短驳单号 */
    @ApiModelProperty("短驳单号")
    private String drayageNo;

    /** 装货id */
    @ApiModelProperty("装货id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long loadId;

    /** 卸车id */
    @ApiModelProperty("卸车id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long unLoadId;

    /** 运单可用状态(0 可用 1 不可用) */
    @ApiModelProperty("运单可用状态(0 可用 1 不可用)")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer enableStatus;

    /** 运单状态 */
    @ApiModelProperty("运单状态")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer status;

    /** 调度状态 */
    @ApiModelProperty("调度状态")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer scheduleStatus;

    /** 短驳状态 */
    @ApiModelProperty("短驳状态")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer drayageStatus;

    /** 开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票 */
    @ApiModelProperty("开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Integer invoiceStatus;

    /** 回单附件 */
    @ApiModelProperty("回单附件")
    private String receiptAttachments;

    /** 运单附件 */
    @ApiModelProperty("运单附件")
    private String billAttach;

    @ApiModelProperty("出库单附件")
    private String outboundAttach;

    /** 总包装费 */
    @ApiModelProperty("总包装费")
    private BigDecimal totalPackingFee;

    /** 总里程费 */
    @ApiModelProperty("总里程费")
    private BigDecimal totalMileageFee;

    /** 总运费 */
    @ApiModelProperty("总运费")
    private BigDecimal totalCarriageFee;

    /** 交易总价 */
    @ApiModelProperty("交易总价")
    private BigDecimal tradeTotalFee;

    /** 应付总价 */
    @ApiModelProperty("应付总价")
    private BigDecimal payableTotalFee;

}
